
import { CreateIndexInfoDto, UpdateIndexInfoDto, QueryIndexInfoDto, DeleteIndexInfoDto, SelectOneIndexInfoDto } from '@/dto/indexInfo.dto';
import indexInfoRepository from '@/repositories/indexInfo.repository';


class IndexInfoService {

    /**
     * 创建
     * @param data  
     * @returns 
     */

    async add(data: CreateIndexInfoDto) {
        // 检查是否已存在
        const findOne = await indexInfoRepository.indexInfoExists(data.filedName);
        if (findOne) {
            if (findOne.filedName == data.filedName) {
                throw new Error('标题已存在！');
            }

        }
        // 创建
        return indexInfoRepository.create(data);
    }
    async update(data: UpdateIndexInfoDto) {
          // 1. 检查是否存在
        const existingCategory = await indexInfoRepository.findById(data.id );
        if (!existingCategory) {
            throw new Error("数据不存在")
        }

        
        const findOne = await indexInfoRepository.findExcludeId(data);
        if (findOne) {
            if (findOne.filedName == data.filedName) {
                throw new Error('名称已存在！');
            }
 
        }
        // 更新
        return indexInfoRepository.update(data);
    }

    async selectOne(reqData: SelectOneIndexInfoDto) {
        return indexInfoRepository.findById(reqData.id)


    }

    async selectList(reqData: QueryIndexInfoDto) {
        return indexInfoRepository.selectList(reqData)


    }
    async delete(reqData: DeleteIndexInfoDto) {
        let res = await indexInfoRepository.delete(reqData);
        if (!res) {
            throw new Error("id不存在，无删除记录！")
        }
        return res


    }

}

export default new IndexInfoService();    
    
    